With on-going development in mobile communication network technologies and computer technologies, there are also ever-increasing demands for improved functionalities and performances for communication and computing devices. One of such functionalities is the capability of sharing remote data between a plurality of terminal devices and platforms over a network. Data synchronization technologies facilitate the sharing of data. For example, Synchronization Markup Language (SyncML) allows data synchronization among different types of devices. For example, a user can access e-mails on a mobile phone, and can modify, update and maintain the e-mails that have been accessed. After data synchronization, when attempting to access the emails from a different device (e.g., a computer), the user can then receive information about which of the emails have not been accessed.
SyncML is a mobile data synchronization protocol that is widely adopted in the industry. SyncML is developed and promoted by SyncML Initiative as an open standard for data synchronization. SyncML can be regarded as a common standard in the field of data synchronization field, covering types and processes of data synchronization.
FIG. 1 illustrates a data synchronization process under the SyncML protocol.
As shown in FIG. 1, a data synchronization process under the SyncML protocol can be divided into six packages:
Package #1: A client terminal transmits initialization information to a server, to request for data synchronization. The initialization information can include a current synchronization anchor of the client terminal and a synchronization type. The synchronization anchor can be synchronization mark and may or may not be related to the contents of the data to be synchronized.
Package #2: The server acknowledges the synchronization request to the client terminal. The server further acknowledges the synchronization type to be adopted by both parties. The synchronization type can include, for example, two-way synchronization, slow synchronization, etc.
Package #3: The client terminal transmits data to be synchronized and a corresponding data fingerprint to the server. The data fingerprint can be used to identify the data to be synchronized.
Package #4: The server processes the data to be synchronized sent from the client terminal and determines difference data between the client terminal and the server. The difference data can correspond to a difference between the current synchronization anchor of the client terminal (transmitted in Package #1) and a synchronization anchor in the server. The server can transmit the difference data, and the corresponding fingerprint, to the client terminal.
Package #5: The client terminal processes the difference data delivered by the server, and uploads a processing result and a pair of corresponding local unique identifier (LUID) and global unique identifier (GUID) to the server. The LUID can be a unique identifier of the data at the client terminal, and the GUID can be a unique identifier to identify that data at the server.
Package #6: the server acknowledges an operation result of the client terminal and records a mapping relationship between the GUIDs and the LUIDs, and then sends a result indicating whether the data synchronization is successful, and the current latest synchronization anchor, to the client terminal.
When the client terminal receives the acknowledgement result in the Package #6 message package, the client terminal can record the synchronization anchor, which is associated with a current version of the data. The recording of the synchronization anchor can indicate that the data synchronization is successful, and that the client terminal and the server store the same data.
It can be seen from the synchronization process of the SyncML protocol that, if more data are to be synchronized, which can lead to a larger volume of difference data being transmitted in the Package #4 message package, the synchronization process can require more time, and can affect user experience. In addition, uncertainties in network transmission caused by, for example, network instability, gateway timeout, etc., can increase the likelihood of data synchronization failure, which can further degrades user experience.